﻿<%@ WebService Language="C#"  Class="Service1.Service1" %>

using System;
//using System.Collections.Generic;

using System.Web;
using System.Web.Services;
using System.Data;
using System.Data.SqlClient;

using System.Text;
using System.Text.RegularExpressions;

namespace Service1
{




    /// <summary>
    /// Summary description for Service1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    //[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class Service1 : System.Web.Services.WebService
    {
        //[WebMethod]
        //public DataSet GetDataResultTable(string serverIP, string clientIP, string StrCollectionName, string StrSearchWords, string StrSearchType, string StrSearchLevel, int nOffset, int nCount, int nSummeryCharsCount, int BBookNameFlag, int BMultiQueryflag, string Strscop, string strSort, bool changeEncoding)
        //{
        //    SearchClass class2 = null;
        //    object varValue = null;
        //    object obj3 = null;
        //    object obj4 = "";
        //    int iRecordNo = 0;
        //    object pQuery = "";
        //    int idSearch = 0;
        //    int num5 = 0;
        //    int num6 = 0;
        //    int num7 = 0;
        //    string s = "";
        //    string str6 = "0";
        //    string str8 = "";
        //    string[] strArray = StrSearchWords.Split(new char[] { ' ' });
        //    string str10 = "";
        //    for (int i = 0; i < strArray.Length; i++)
        //    {
        //        if (strArray[i] != "")
        //        {
        //            str10 = str10 + strArray[i];
        //            if (i < (strArray.Length - 1))
        //            {
        //                str10 = str10 + " + ";
        //            }
        //        }
        //    }
        //    StrSearchWords = str10;
        //    DataSet set = new DataSet();
        //    DataTable table = new DataTable("ErrorTable");
        //    table.Columns.Add("ID", Type.GetType("System.Int32"));
        //    table.Columns.Add("ErrorStr", Type.GetType("System.String"));
        //    DataRow row = null;
        //    try
        //    {
        //        //class2 = new SearchClass();
        //        //varValue = serverIP;
        //        //obj3 = clientIP;


        //    }
        //    catch (Exception)
        //    {
        //        row = table.NewRow();
        //        row["ID"] = 1;
        //        row["ErrorStr"] = "Fail to Create Object.";
        //        table.Rows.Add(row);
        //        set.Tables.Add(table);





        //        return set;
        //    }
        //    if (class2.SOInitialize() == 0)
        //    {
        //        class2.SetSearchOption(0x11, ref varValue);
        //        class2.SetSearchOption(0x12, ref obj3);
        //        class2.SetSearchOption(0x13, ref obj4);
        //        char ch = '"';
        //        if (changeEncoding)
        //        {
        //            byte[] bytes = Encoding.UTF8.GetBytes(StrSearchWords);
        //            byte[] buffer2 = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding(0x4e8), bytes);
        //            StrSearchWords = Encoding.GetEncoding(0x4e4).GetString(buffer2);
        //        }
        //        pQuery = " Search '" + StrCollectionName + "' ";
        //        string str11 = "";
        //        string str12 = "";
        //        string[] strArray2 = null;
        //        string[] strArray3 = null;
        //        string[] strArray4 = null;
        //        if (StrSearchWords.IndexOf("^") >= 0)
        //        {
        //            int index = 0;
        //            strArray2 = StrSearchWords.Split(new char[] { '^' });
        //            strArray3 = StrSearchLevel.Split(new char[] { '^' });
        //            strArray4 = StrSearchType.Split(new char[] { '^' });
        //            foreach (string str13 in strArray2)
        //            {
        //                if ((str13.Trim() != null) && (str13.Trim() != ""))
        //                {
        //                    string str14 = "";
        //                    str12 = str13;
        //                    str12 = str12.Replace("+", " ").TrimEnd(new char[0]);
        //                    if (str12.IndexOf("-") > -1)
        //                    {
        //                        int length = 0;
        //                        int startIndex = 0;
        //                        str14 = str12;
        //                        for (int j = 0; j < str12.Length; j++)
        //                        {
        //                            length = str12.IndexOf("-");
        //                            if (length > -1)
        //                            {
        //                                if (j == 0)
        //                                {
        //                                    str12 = str12.Substring(0, length);
        //                                }
        //                                startIndex = str12.IndexOf(" ", length);
        //                                if (startIndex > 0)
        //                                {
        //                                    str12 = str12.Substring(startIndex, str12.Length - 1);
        //                                }
        //                            }
        //                        }
        //                    }
        //                    string[] strArray5 = null;
        //                    string str15 = "";
        //                    string str16 = "";
        //                    if (str14.IndexOf("-") >= 0)
        //                    {
        //                        int num16 = 0;
        //                        strArray5 = str14.Split(new char[] { ' ' });
        //                        str14 = "";
        //                        foreach (string str17 in strArray5)
        //                        {
        //                            if (((str17.Trim() != null) && (str17.Trim() != "")) && ((num16 = str17.IndexOf("-")) >= 0))
        //                            {
        //                                if (str17.Replace("-", "").Trim() != null)
        //                                {
        //                                    str15 = str15 + str17.Replace("-", "").Trim() + ",";
        //                                    if ((str17.Replace("-", "").Trim() != "") && (str17.Replace("-", "").Trim() != " "))
        //                                    {
        //                                        str14 = str14 + " AND Not {For \"Contents\".\"skrdisp\" = ^" + str17.Replace("-", "").Trim() + "^ }";
        //                                    }
        //                                }
        //                            }
        //                            else
        //                            {
        //                                str16 = str16 + " " + str17;
        //                            }
        //                        }
        //                        if ((str15 != null) && (str15 != ""))
        //                        {
        //                            str15 = str15.TrimEnd(new char[] { ',' });
        //                        }
        //                        str16 = str16.Trim();
        //                    }
        //                    if (str16 != "")
        //                    {
        //                        str12 = str16;
        //                    }
        //                    if (index > 0)
        //                    {
        //                        str11 = str11 + " AND ";
        //                    }
        //                    str11 = str11 + " {Using " + strArray3[index] + ",NOCAM,NOCS,NOSOUNDEX, " + strArray4[index] + " for 'Contents'.'SkrDisp' = ^" + str12 + "^ }" + str14;
        //                    if (strArray3[index] == "NoTWord")
        //                    {
        //                        str11 = str11 + " {Using NOCAM,NOCS,NOSOUNDEX, " + strArray4[index] + " for 'Contents'.'SkrDisp' = ^ا^} AND NOT {Using NOCAM,NOCS,NOSOUNDEX, " + strArray4[index] + " for 'Contents'.'SkrDisp' = ^" + str12 + "^} " + str14;
        //                    }
        //                    index++;
        //                }
        //            }
        //        }
        //        else
        //        {
        //            string str18 = "";
        //            StrSearchWords = StrSearchWords.Replace("+", " ").TrimEnd(new char[0]);
        //            if (StrSearchWords.IndexOf("-") > -1)
        //            {
        //                int num17 = 0;
        //                int num18 = 0;
        //                str18 = StrSearchWords;
        //                for (int k = 0; k < StrSearchWords.Length; k++)
        //                {
        //                    num17 = StrSearchWords.IndexOf("-");
        //                    if (num17 > -1)
        //                    {
        //                        if (k == 0)
        //                        {
        //                            StrSearchWords = StrSearchWords.Substring(0, num17);
        //                        }
        //                        num18 = StrSearchWords.IndexOf(" ", num17);
        //                        if (num18 > 0)
        //                        {
        //                            StrSearchWords = StrSearchWords.Substring(num18, StrSearchWords.Length - 1);
        //                        }
        //                    }
        //                }
        //            }
        //            string[] strArray6 = null;
        //            string str19 = "";
        //            string str20 = "";
        //            if (str18.IndexOf("-") >= 0)
        //            {
        //                int num20 = 0;
        //                strArray6 = str18.Split(new char[] { ' ' });
        //                str18 = "";
        //                foreach (string str21 in strArray6)
        //                {
        //                    if (((str21.Trim() != null) && (str21.Trim() != "")) && ((num20 = str21.IndexOf("-")) >= 0))
        //                    {
        //                        if (str21.Replace("-", "").Trim() != null)
        //                        {
        //                            str19 = str19 + str21.Replace("-", "").Trim() + ",";
        //                            if ((str21.Replace("-", "").Trim() != "") && (str21.Replace("-", "").Trim() != " "))
        //                            {
        //                                str18 = str18 + " AND Not {For \"Contents\".\"skrdisp\" = ^" + str21.Replace("-", "").Trim() + "^}";
        //                            }
        //                        }
        //                    }
        //                    else
        //                    {
        //                        str20 = str20 + " " + str21;
        //                    }
        //                }
        //                if ((str19 != null) && (str19 != ""))
        //                {
        //                    str19 = str19.TrimEnd(new char[] { ',' });
        //                }
        //                str20 = str20.Trim();
        //            }
        //            if (str20 != "")
        //            {
        //                StrSearchWords = str20;
        //            }
        //            str11 = " {Using " + StrSearchLevel + ",NOCAM,NOCS,NOSOUNDEX, " + StrSearchType + " for 'Contents'.'SkrDisp' = ^" + StrSearchWords + "^}" + str18;
        //            if (StrSearchLevel == "NoTWord")
        //            {
        //                str11 = " {Using NOCAM,NOCS,NOSOUNDEX, " + StrSearchType + " for 'Contents'.'SkrDisp' = ^ا^} AND NOT {Using NOCAM,NOCS,NOSOUNDEX, " + StrSearchType + " for 'Contents'.'SkrDisp' = ^" + StrSearchWords + "^} " + str18;
        //            }
        //        }
        //        pQuery = (pQuery + str11).ToString().Replace("'", ch.ToString());
        //        str8 = pQuery.ToString();
        //    }
        //    try
        //    {
        //        class2.SetSearchQuery(ref pQuery);
        //    }
        //    catch
        //    {
        //        row = table.NewRow();
        //        row["ID"] = 2;
        //        row["ErrorStr"] = "SearchObj.SetSearchQuery Error.1" + str8;
        //        table.Rows.Add(row);
        //        set.Tables.Add(table);
        //        return set;
        //    }
        //    object szCollectionName = StrCollectionName;
        //    if (class2.SearchNow(ref szCollectionName, ref obj3, nOffset, nCount) == 0x7da)
        //    {
        //        row = table.NewRow();
        //        row["ID"] = 3;
        //        row["ErrorStr"] = "عفوا ًلا توجد نتائج2" + str8;
        //        table.Rows.Add(row);
        //        set.Tables.Add(table);
        //        return set;
        //    }
        //    idSearch = class2.GetSearchID();
        //    try
        //    {
        //        class2.InitResult(idSearch, obj3.ToString());
        //    }
        //    catch (Exception exception2)
        //    {
        //        DataRow row2 = table.NewRow();
        //        row2["ID"] = 5;
        //        row2["ErrorStr"] = exception2.Message + "3" + str8;
        //        table.Rows.Add(row);
        //        set.Tables.Add(table);
        //        return set;
        //    }
        //    num5 = int.Parse(class2.GetResultInfo(3).ToString());
        //    if (num5 == 0)
        //    {
        //        row = table.NewRow();
        //        row["ID"] = 4;
        //        row["ErrorStr"] = "عفوا ًلا توجد نتائج4" + str8;
        //        table.Rows.Add(row);
        //        set.Tables.Add(table);
        //        return set;
        //    }
        //    num6 = 0;
        //    num7 = num5 - nOffset;
        //    if (num7 == 1)
        //    {
        //        num6 = 0;
        //    }
        //    else if (num7 <= nCount)
        //    {
        //        num6 = num7 - 1;
        //    }
        //    else
        //    {
        //        num6 = nCount - 1;
        //    }
        //    DataTable table2 = new DataTable("ResultTable");
        //    table2.Columns.Add("ID", Type.GetType("System.String"));
        //    table2.Columns.Add("Serial", Type.GetType("System.Int32"));
        //    table2.Columns.Add("Summary", Type.GetType("System.String"));
        //    table2.Columns.Add("Info", Type.GetType("System.String"));
        //    table2.Columns.Add("DocID", Type.GetType("System.String"));
        //    table2.Columns.Add("LeftVal", Type.GetType("System.Int32"));
        //    table2.Columns.Add("RightVal", Type.GetType("System.Int32"));
        //    table2.Columns.Add("PageID", Type.GetType("System.Int32"));
        //    table2.Columns.Add("TotalResult", Type.GetType("System.Int32"));
        //    DataRow row3 = null;
        //    try
        //    {
        //        for (iRecordNo = 0; iRecordNo <= num6; iRecordNo++)
        //        {
        //            int resultRecord = class2.GetResultRecord(iRecordNo);
        //            if (class2.GetResultField("Info").ToString() != "")
        //            {
        //                s = class2.GetResultField("Summary").ToString().Replace("\"", " ").Replace("&nbsp;", " ");
        //                string str4 = class2.GetResultField("Info").ToString().Replace("\"", " ");
        //                string str5 = class2.GetResultField("id").ToString();
        //                str6 = class2.GetResultField("DocID").ToString().Replace("\"", " ");
        //                string str22 = class2.GetResultField("LeftVal").ToString();
        //                string str23 = class2.GetResultField("RightVal").ToString();
        //                string str24 = class2.GetResultField("PageID").ToString();
        //                int num9 = (nOffset + iRecordNo) + 1;
        //                if (changeEncoding)
        //                {
        //                    byte[] buffer3 = Encoding.GetEncoding(0x4e4).GetBytes(s);
        //                    s = Encoding.GetEncoding(0x4e8).GetString(buffer3);
        //                    byte[] buffer4 = Encoding.GetEncoding(0x4e4).GetBytes(str4);
        //                    str4 = Encoding.GetEncoding(0x4e8).GetString(buffer4);
        //                }
        //                row3 = table2.NewRow();
        //                row3["ID"] = str5;
        //                row3["Serial"] = num9;
        //                row3["Info"] = str4;
        //                row3["Summary"] = s;
        //                row3["DocID"] = str6;
        //                row3["LeftVal"] = Convert.ToInt32(str22);
        //                row3["RightVal"] = Convert.ToInt32(str23);
        //                row3["PageID"] = Convert.ToInt32(str24);
        //                row3["TotalResult"] = num5;
        //                table2.Rows.Add(row3);
        //                if (num9 > 200)
        //                {
        //                    goto Label_0E24;
        //                }
        //                if (resultRecord != 0)
        //                {
        //                    class2.SORelease();
        //                    goto Label_0E24;
        //                }
        //            }
        //        }
        //    }
        //    catch (Exception exception3)
        //    {
        //        string str25 = exception3.ToString();
        //    }
        //Label_0E24:
        //    set.Tables.Add(table2);
        //    return set;
        //}

        [WebMethod]
        public DataSet GetDataResultTable(string serverIP, string clientIP, string StrCollectionName, string StrSearchWords, string StrSearchType, string StrSearchLevel, int nOffset, int nCount, int nSummeryCharsCount, int BBookNameFlag, int BMultiQueryflag, string Strscop, string strSort, bool changeEncoding)
        {
            
            //EXACT       STEM    ROOT
            string command = "SELECT * FROM [AlIftaaGateDBIbnBaz].[dbo].[Page]";
            command += (StrSearchWords.Trim().Length > 0 ? " Where " : "");
            string Space = (StrSearchType == "EXACT" ? " " : "");
            if (StrSearchLevel == "Phrase")
            {
                command += " (SearchContent LIKE '%" + Space + this.prepareForSearch(StrSearchWords) + Space + "%') ";
            }
            else if (StrSearchLevel == "NoTWord")
            {
                command += "NOT (SearchContent LIKE '%" + Space + this.prepareForSearch(StrSearchWords) + Space + "%') ";
            }
            else if (StrSearchLevel == "AnyWord")
            {
                string[] strArray = StrSearchWords.Split(new char[] { ' ' });
                for (int i = 0; i < strArray.Length; i++)
                {
                    command += (i != 0 ? " OR " : "");
                    command += " (SearchContent LIKE '%" + Space + this.prepareForSearch(strArray[i]) + Space + "%') ";
                }
            }
            SqlDataAdapter dataAdapter = new SqlDataAdapter(command, sqlconString);
            DataTable pagesDataTable = new DataTable();
            dataAdapter.Fill(pagesDataTable);


            DataSet set = new DataSet();
            DataTable table = new DataTable("ErrorTable");
            table.Columns.Add("ID", Type.GetType("System.Int32"));
            table.Columns.Add("ErrorStr", Type.GetType("System.String"));
            try
            {
                DataTable table2 = new DataTable("ResultTable");
                table2.Columns.Add("ID", Type.GetType("System.String"));
                table2.Columns.Add("Serial", Type.GetType("System.Int32"));
                table2.Columns.Add("Summary", Type.GetType("System.String"));
                table2.Columns.Add("Info", Type.GetType("System.String"));
                table2.Columns.Add("DocID", Type.GetType("System.String"));
                table2.Columns.Add("LeftVal", Type.GetType("System.Int32"));
                table2.Columns.Add("RightVal", Type.GetType("System.Int32"));
                table2.Columns.Add("PageID", Type.GetType("System.Int32"));
                table2.Columns.Add("TotalResult", Type.GetType("System.Int32"));

                for (int i = 0; i < pagesDataTable.Rows.Count; i++)
                {
                    table2.Rows.Add(new object[]{ pagesDataTable.Rows[i]["ID"]
                        , pagesDataTable.Rows[i]["ID"]
                        , getDisplyedText(pagesDataTable.Rows[i]["SearchContent"].ToString(), StrSearchWords, StrSearchType, StrSearchLevel)
                        , pagesDataTable.Rows[i]["Title"], pagesDataTable.Rows[i]["ID"]
                        , 0, 0, pagesDataTable.Rows[i]["ID"], pagesDataTable.Rows.Count});
                }

                set.Tables.Add(table2);
            }
            catch (Exception)
            {
            }
            return set;
        }


        //[WebMethod]
        //public DataSet GetDataDetailsTable(string serverIP, string clientIP, string StrCollectionName, string StrSearchWords, string StrSearchType, string StrSearchLevel, int nOffset, int nCount, int nSummeryCharsCount, int BBookNameFlag, int BMultiQueryflag, string Strscop, string strSort, bool changeEncoding, string pageid)
        //{
        //    SearchClass class2 = null;
        //    object varValue = null;
        //    object obj3 = null;
        //    object obj4 = "";
        //    int num = 0;
        //    int num2 = 0;
        //    int lRecID = 0;
        //    object pQuery = "";
        //    int idSearch = 0;
        //    int num5 = 0;
        //    int num6 = 0;
        //    int num7 = 0;
        //    string s = "";
        //    string str6 = "0";
        //    string str8 = "";
        //    string str9 = "";
        //    string str10 = "";
        //    if (StrSearchWords != null)
        //    {
        //        StrSearchWords = StrSearchWords.Trim();
        //        string[] strArray = StrSearchWords.Split(new char[] { ' ' });
        //        string str11 = "";
        //        for (int i = 0; i < strArray.Length; i++)
        //        {
        //            if (strArray[i] != "")
        //            {
        //                str11 = str11 + strArray[i];
        //                if (i < (strArray.Length - 1))
        //                {
        //                    str11 = str11 + " + ";
        //                }
        //            }
        //        }
        //        StrSearchWords = str11;
        //    }
        //    DataSet set = new DataSet();
        //    DataTable table = new DataTable("ErrorTable");
        //    table.Columns.Add("ID", Type.GetType("System.Int32"));
        //    table.Columns.Add("ErrorStr", Type.GetType("System.String"));
        //    DataRow row = null;
        //    try
        //    {
        //        class2 = new SearchClass();
        //        varValue = serverIP;
        //        obj3 = clientIP;
        //    }
        //    catch (Exception)
        //    {
        //        row = table.NewRow();
        //        row["ID"] = 1;
        //        row["ErrorStr"] = "Fail to Create Object.";
        //        table.Rows.Add(row);
        //        set.Tables.Add(table);
        //        return set;
        //    }
        //    if (class2.SOInitialize() == 0)
        //    {
        //        class2.SetSearchOption(0x11, ref varValue);
        //        class2.SetSearchOption(0x12, ref obj3);
        //        class2.SetSearchOption(0x13, ref obj4);
        //        if (changeEncoding && (StrSearchWords != null))
        //        {
        //            byte[] bytes = Encoding.UTF8.GetBytes(StrSearchWords);
        //            byte[] buffer2 = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding(0x4e8), bytes);
        //            StrSearchWords = Encoding.GetEncoding(0x4e4).GetString(buffer2);
        //        }
        //        pQuery = " Search \"" + StrCollectionName + "\" { For \"PageID\" = ^[" + pageid + "," + pageid + "]^ } And ";
        //        string str12 = "";
        //        string str13 = "";
        //        string[] strArray2 = null;
        //        string[] strArray3 = null;
        //        string[] strArray4 = null;
        //        if (StrSearchWords.IndexOf("^") >= 0)
        //        {
        //            int index = 0;
        //            strArray2 = StrSearchWords.Split(new char[] { '^' });
        //            strArray3 = StrSearchLevel.Split(new char[] { '^' });
        //            strArray4 = StrSearchType.Split(new char[] { '^' });
        //            foreach (string str14 in strArray2)
        //            {
        //                if ((str14.Trim() != null) && (str14.Trim() != ""))
        //                {
        //                    string str15 = "";
        //                    str13 = str14;
        //                    str13 = str13.Replace("+", " ").TrimEnd(new char[0]);
        //                    if (str13.IndexOf("-") > -1)
        //                    {
        //                        int length = 0;
        //                        int startIndex = 0;
        //                        str15 = str13;
        //                        for (int j = 0; j < str13.Length; j++)
        //                        {
        //                            length = str13.IndexOf("-");
        //                            if (length > -1)
        //                            {
        //                                if (j == 0)
        //                                {
        //                                    str13 = str13.Substring(0, length);
        //                                }
        //                                startIndex = str13.IndexOf(" ", length);
        //                                if (startIndex > 0)
        //                                {
        //                                    str13 = str13.Substring(startIndex, str13.Length - 1);
        //                                }
        //                            }
        //                        }
        //                    }
        //                    string[] strArray5 = null;
        //                    string str16 = "";
        //                    string str17 = "";
        //                    if (str15.IndexOf("-") >= 0)
        //                    {
        //                        int num16 = 0;
        //                        strArray5 = str15.Split(new char[] { ' ' });
        //                        str15 = "";
        //                        foreach (string str18 in strArray5)
        //                        {
        //                            if (((str18.Trim() != null) && (str18.Trim() != "")) && ((num16 = str18.IndexOf("-")) >= 0))
        //                            {
        //                                if (str18.Replace("-", "").Trim() != null)
        //                                {
        //                                    str16 = str16 + str18.Replace("-", "").Trim() + ",";
        //                                    if ((str18.Replace("-", "").Trim() != "") && (str18.Replace("-", "").Trim() != " "))
        //                                    {
        //                                        str15 = str15 + " AND Not { For \"Contents\".\"skrdisp\" = ^" + str18.Replace("-", "").Trim() + "^} ";
        //                                    }
        //                                }
        //                            }
        //                            else
        //                            {
        //                                str17 = str17 + " " + str18;
        //                            }
        //                        }
        //                        if ((str16 != null) && (str16 != ""))
        //                        {
        //                            str16 = str16.TrimEnd(new char[] { ',' });
        //                        }
        //                        str17 = str17.Trim();
        //                    }
        //                    if (str17 != "")
        //                    {
        //                        str13 = str17;
        //                    }
        //                    if (index > 0)
        //                    {
        //                        str12 = str12 + " AND ";
        //                    }
        //                    str12 = str12 + " {Using " + strArray3[index] + ",NOCAM,NOCS,NOSOUNDEX, " + strArray4[index] + " for \"Contents\".\"SkrDisp\" = ^" + str13 + "^} " + str15;
        //                    if (strArray3[index] == "NoTWord")
        //                    {
        //                        str12 = str12 + " {Using NOCAM,NOCS,NOSOUNDEX, " + strArray4[index] + " for \"Contents\".\"SkrDisp\" = ^ا^} AND NOT {Using NOCAM,NOCS,NOSOUNDEX, " + strArray4[index] + " for \"Contents\".\"SkrDisp\" = ^" + str13 + "^} " + str15;
        //                    }
        //                    index++;
        //                }
        //            }
        //        }
        //        else
        //        {
        //            string str19 = "";
        //            StrSearchWords = StrSearchWords.Replace("+", " ").TrimEnd(new char[0]);
        //            if (StrSearchWords.IndexOf("-") > -1)
        //            {
        //                int num17 = 0;
        //                int num18 = 0;
        //                str19 = StrSearchWords;
        //                for (int k = 0; k < StrSearchWords.Length; k++)
        //                {
        //                    num17 = StrSearchWords.IndexOf("-");
        //                    if (num17 > -1)
        //                    {
        //                        if (k == 0)
        //                        {
        //                            StrSearchWords = StrSearchWords.Substring(0, num17);
        //                        }
        //                        num18 = StrSearchWords.IndexOf(" ", num17);
        //                        if (num18 > 0)
        //                        {
        //                            StrSearchWords = StrSearchWords.Substring(num18, StrSearchWords.Length - 1);
        //                        }
        //                    }
        //                }
        //            }
        //            string[] strArray6 = null;
        //            string str20 = "";
        //            string str21 = "";
        //            if (str19.IndexOf("-") >= 0)
        //            {
        //                int num20 = 0;
        //                strArray6 = str19.Split(new char[] { ' ' });
        //                str19 = "";
        //                foreach (string str22 in strArray6)
        //                {
        //                    if (((str22.Trim() != null) && (str22.Trim() != "")) && ((num20 = str22.IndexOf("-")) >= 0))
        //                    {
        //                        if (str22.Replace("-", "").Trim() != null)
        //                        {
        //                            str20 = str20 + str22.Replace("-", "").Trim() + ",";
        //                            if ((str22.Replace("-", "").Trim() != "") && (str22.Replace("-", "").Trim() != " "))
        //                            {
        //                                str19 = str19 + " AND Not { For \"Contents\".\"skrdisp\" = ^" + str22.Replace("-", "").Trim() + "^}";
        //                            }
        //                        }
        //                    }
        //                    else
        //                    {
        //                        str21 = str21 + " " + str22;
        //                    }
        //                }
        //                if ((str20 != null) && (str20 != ""))
        //                {
        //                    str20 = str20.TrimEnd(new char[] { ',' });
        //                }
        //                str21 = str21.Trim();
        //            }
        //            if (str21 != "")
        //            {
        //                StrSearchWords = str21;
        //            }
        //            str12 = " {Using " + StrSearchLevel + ",NOCAM,NOCS,NOSOUNDEX, " + StrSearchType + " for \"Contents\".\"SkrDisp\" = ^" + StrSearchWords + "^ } " + str19;
        //            if (StrSearchLevel == "NoTWord")
        //            {
        //                str12 = " {Using NOCAM,NOCS,NOSOUNDEX, " + StrSearchType + " for \"Contents\".\"SkrDisp\" = ^ا^} AND NOT {Using NOCAM,NOCS,NOSOUNDEX, " + StrSearchType + " for \"Contents\".\"SkrDisp\" = ^" + StrSearchWords + "^} " + str19;
        //            }
        //        }
        //        pQuery = pQuery + str12;
        //        str9 = pQuery.ToString().Replace("\"", "'");
        //        str10 = pQuery.ToString();
        //    }
        //    try
        //    {
        //        class2.SetSearchQuery(ref pQuery);
        //    }
        //    catch
        //    {
        //        row = table.NewRow();
        //        row["ID"] = 2;
        //        row["ErrorStr"] = "SearchObj.SetSearchQuery Error." + str10;
        //        table.Rows.Add(row);
        //        set.Tables.Add(table);
        //        return set;
        //    }
        //    object szCollectionName = StrCollectionName;
        //    num2 = class2.SearchNow(ref szCollectionName, ref obj3, nOffset, nCount);
        //    if (num2 == 0x7da)
        //    {
        //        row = table.NewRow();
        //        row["ID"] = 3;
        //        row["ErrorStr"] = "عفوا ًلا توجد نتائج" + str10;
        //        table.Rows.Add(row);
        //        set.Tables.Add(table);
        //        return set;
        //    }
        //    idSearch = class2.GetSearchID();
        //    try
        //    {
        //        class2.InitResult(idSearch, obj3.ToString());
        //    }
        //    catch (Exception exception2)
        //    {
        //        DataRow row2 = table.NewRow();
        //        row2["ID"] = 5;
        //        row2["ErrorStr"] = exception2.Message + str10;
        //        table.Rows.Add(row);
        //        set.Tables.Add(table);
        //        return set;
        //    }
        //    num5 = int.Parse(class2.GetResultInfo(3).ToString());
        //    if (num5 == 0)
        //    {
        //        row = table.NewRow();
        //        row["ID"] = 4;
        //        row["ErrorStr"] = "عفوا ًلا توجد نتائج" + str10;
        //        table.Rows.Add(row);
        //        set.Tables.Add(table);
        //        return set;
        //    }
        //    num6 = 0;
        //    num7 = num5 - nOffset;
        //    if (num7 == 1)
        //    {
        //        num6 = 0;
        //    }
        //    else if (num7 <= nCount)
        //    {
        //        num6 = num7 - 1;
        //    }
        //    else
        //    {
        //        num6 = nCount - 1;
        //    }
        //    DataTable table2 = new DataTable("ResultTable");
        //    table2.Columns.Add("ID", Type.GetType("System.String"));
        //    table2.Columns.Add("Serial", Type.GetType("System.Int32"));
        //    table2.Columns.Add("Summary", Type.GetType("System.String"));
        //    table2.Columns.Add("Info", Type.GetType("System.String"));
        //    table2.Columns.Add("DocID", Type.GetType("System.String"));
        //    table2.Columns.Add("LeftVal", Type.GetType("System.Int32"));
        //    table2.Columns.Add("RightVal", Type.GetType("System.Int32"));
        //    table2.Columns.Add("PageID", Type.GetType("System.Int32"));
        //    table2.Columns.Add("TotalResult", Type.GetType("System.Int32"));
        //    table2.Columns.Add("Contents", Type.GetType("System.String"));
        //    DataRow row3 = null;
        //    try
        //    {
        //        num = class2.InitHilighting(idSearch, clientIP, lRecID);
        //        class2.SetHilightOptions("", "<Font Color=\"RED\"><B>", "</B></Font>");
        //        for (lRecID = 0; lRecID <= num6; lRecID++)
        //        {
        //            int resultRecord = class2.GetResultRecord(lRecID);
        //            if (class2.GetResultField("Info").ToString() != "")
        //            {
        //                s = class2.GetResultField("Summary").ToString().Replace("\"", " ").Replace("&nbsp;", " ");
        //                str8 = class2.GetHilightedField("Contents", 0).ToString();
        //                string str4 = class2.GetResultField("Info").ToString().Replace("\"", " ");
        //                str4 = string.Concat(new object[] { str4, "<br>", str10, "<br>", num2 });
        //                if (((str4 != null) && (str4 != "")) && ((s == null) || (s == "")))
        //                {
        //                    s = "التفاصيل";
        //                }
        //                string str5 = class2.GetResultField("id").ToString();
        //                str6 = class2.GetResultField("DocID").ToString().Replace("\"", " ");
        //                string str23 = class2.GetResultField("LeftVal").ToString();
        //                string str24 = class2.GetResultField("RightVal").ToString();
        //                string str25 = class2.GetResultField("PageID").ToString();
        //                int num9 = (nOffset + lRecID) + 1;
        //                if (changeEncoding)
        //                {
        //                    byte[] buffer3 = Encoding.GetEncoding(0x4e4).GetBytes(s);
        //                    s = Encoding.GetEncoding(0x4e8).GetString(buffer3);
        //                    byte[] buffer4 = Encoding.GetEncoding(0x4e4).GetBytes(str4);
        //                    str4 = Encoding.GetEncoding(0x4e8).GetString(buffer4);
        //                    byte[] buffer5 = Encoding.GetEncoding(0x4e4).GetBytes(str8);
        //                    str8 = Encoding.GetEncoding(0x4e8).GetString(buffer5);
        //                }
        //                row3 = table2.NewRow();
        //                row3["ID"] = str5;
        //                row3["Serial"] = num9;
        //                row3["Info"] = str4;
        //                row3["Summary"] = s;
        //                row3["DocID"] = str6;
        //                row3["LeftVal"] = Convert.ToInt32(str23);
        //                row3["RightVal"] = Convert.ToInt32(str24);
        //                row3["PageID"] = Convert.ToInt32(str25);
        //                row3["TotalResult"] = num5;
        //                row3["Contents"] = str8;
        //                table2.Rows.Add(row3);
        //                if (num9 > 200)
        //                {
        //                    break;
        //                }
        //                if (resultRecord != 0)
        //                {
        //                    class2.SORelease();
        //                    break;
        //                }
        //                if ((str8 != null) && (str8 != ""))
        //                {
        //                    break;
        //                }
        //            }
        //        }
        //        class2.ReleaseHighlighting();
        //    }
        //    catch (Exception exception3)
        //    {
        //        string str26 = exception3.ToString();
        //    }
        //    set.Tables.Add(table2);
        //    return set;
        //}


        public string sqlconString = System.Configuration.ConfigurationSettings.AppSettings["conn"].ToString();

        

        [WebMethod]
        public DataSet GetDataDetailsTable(string serverIP, string clientIP, string StrCollectionName, string StrSearchWords, string StrSearchType, string StrSearchLevel, int nOffset, int nCount, int nSummeryCharsCount, int BBookNameFlag, int BMultiQueryflag, string Strscop, string strSort, bool changeEncoding, string pageid)
        {
            string command = "SELECT * FROM [AlIftaaGateDBIbnBaz].[dbo].[Page] where ID=" + pageid;
            SqlDataAdapter dataAdapter = new SqlDataAdapter(command, sqlconString);
            DataTable pagesDataTable = new DataTable();
            dataAdapter.Fill(pagesDataTable);


            DataSet set = new DataSet();
            DataTable table = new DataTable("ErrorTable");
            table.Columns.Add("ID", Type.GetType("System.Int32"));
            table.Columns.Add("ErrorStr", Type.GetType("System.String"));
            try
            {
                DataTable table2 = new DataTable("ResultTable");
                table2.Columns.Add("ID", Type.GetType("System.String"));
                table2.Columns.Add("Serial", Type.GetType("System.Int32"));
                table2.Columns.Add("Summary", Type.GetType("System.String"));
                table2.Columns.Add("Info", Type.GetType("System.String"));
                table2.Columns.Add("DocID", Type.GetType("System.String"));
                table2.Columns.Add("LeftVal", Type.GetType("System.Int32"));
                table2.Columns.Add("RightVal", Type.GetType("System.Int32"));
                table2.Columns.Add("PageID", Type.GetType("System.Int32"));
                table2.Columns.Add("TotalResult", Type.GetType("System.Int32"));
                table2.Columns.Add("Contents", Type.GetType("System.String"));
                for (int i = 0; i < pagesDataTable.Rows.Count; i++)
                {
                    table2.Rows.Add(new object[]{ pagesDataTable.Rows[i]["ID"], 4, pagesDataTable.Rows[i]["DisplayContent"].ToString().Substring(0, 120), pagesDataTable.Rows[i]["Title"], pagesDataTable.Rows[i]["ID"], 0, 0, pagesDataTable.Rows[i]["ID"], pagesDataTable.Rows.Count, pagesDataTable.Rows[i]["DisplayContent"]});
                }

                set.Tables.Add(table2);
            }
            catch (Exception)
            {
            }
            return set;
        }

        [WebMethod]
        public string GetDataResult(string serverIP, string clientIP, string StrCollectionName, string StrSearchWords, string StrSearchType, string StrSearchLevel, int nOffset, int nCount, int nSummeryCharsCount, int BBookNameFlag, int BMultiQueryflag, string Strscop, string strSort, bool changeEncoding)
        {
            ////SearchClass class2 = null;
            //object varValue = null;
            //object obj3 = null;
            //object obj4 = "";
            //int num = 0;
            //int iRecordNo = 0;
            //object pQuery = "";
            //int idSearch = 0;
            //int num5 = 0;
            //int num6 = 0;
            //int num7 = 0;
            //int num10 = 0;
            //string str6 = "";
            //int num11 = 1;
            //string str7 = "";
            //try
            //{
            //    class2 = new SearchClass();
            //    varValue = serverIP;
            //    obj3 = clientIP;
            //}
            //catch
            //{
            //    return "<Err id='1'>Fail to Create Object.</Err>";
            //}
            //if (class2.SOInitialize() == 0)
            //{
            //    class2.SetSearchOption(0x11, ref varValue);
            //    class2.SetSearchOption(0x12, ref obj3);
            //    class2.SetSearchOption(0x13, ref obj4);
            //    char ch = '"';
            //    if (changeEncoding)
            //    {
            //        byte[] bytes = Encoding.UTF8.GetBytes(StrSearchWords);
            //        byte[] buffer2 = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding(0x4e8), bytes);
            //        StrSearchWords = Encoding.GetEncoding(0x4e4).GetString(buffer2);
            //    }
            //    pQuery = " Search '" + StrCollectionName + "' Using " + StrSearchLevel + ", " + StrSearchType + " for 'Contents'.'SkrDisp' = ^" + StrSearchWords + "^";
            //    if (Strscop != "")
            //    {
            //        object obj7 = pQuery;
            //        pQuery = string.Concat(new object[] { obj7, " And using ", StrSearchLevel, ", ", StrSearchType, " for 'DocID' = ^", Strscop, "^ " });
            //    }
            //    pQuery = pQuery.ToString().Replace("'", ch.ToString());
            //}
            //try
            //{
            //    class2.SetSearchQuery(ref pQuery);
            //}
            //catch
            //{
            //    return "<Err id='2'>SearchObj.SetSearchQuery Error.</Err>";
            //}
            //object szCollectionName = StrCollectionName;
            //if (class2.SearchNow(ref szCollectionName, ref obj3, nOffset, nCount) == 0x7da)
            //{
            //    return "<Err id='3'> عفوا ًلا توجد نتائج </Err>";
            //}
            //idSearch = class2.GetSearchID();
            //try
            //{
            //    class2.InitResult(idSearch, obj3.ToString());
            //}
            //catch (Exception exception)
            //{
            //    string message = exception.Message;
            //}
            //num5 = int.Parse(class2.GetResultInfo(3).ToString());
            //if (num5 == 0)
            //{
            //    return "<Err id='4'> عفوا ًلا توجد نتائج  </Err>";
            //}
            //num6 = 0;
            //num7 = num5 - nOffset;
            //if (num7 == 1)
            //{
            //    num6 = 0;
            //}
            //else if (num7 <= nCount)
            //{
            //    num6 = num7 - 1;
            //}
            //else
            //{
            //    num6 = nCount - 1;
            //}
            //string str = "";
            //str6 = "<Hits CollectionName= " + StrCollectionName + " SearchWord= " + StrSearchWords + " SearchType= " + StrSearchType + " SearchLevel= " + StrSearchLevel + " TotalResultsCount= " + num5.ToString() + " Offset= " + nOffset.ToString() + " Count= " + nCount.ToString() + " Scope= " + Strscop + " > ";
            //for (iRecordNo = 0; iRecordNo <= num6; iRecordNo++)
            //{
            //    int resultRecord = class2.GetResultRecord(iRecordNo);
            //    string s = class2.GetResultField("Summary").ToString().Replace("\"", " ").Replace("&nbsp;", " ");
            //    string str4 = class2.GetResultField("info").ToString().Replace("\"", " ");
            //    string str5 = class2.GetResultField("id").ToString();
            //    int num9 = (nOffset + iRecordNo) + 1;
            //    if (changeEncoding)
            //    {
            //        byte[] buffer3 = Encoding.GetEncoding(0x4e4).GetBytes(s);
            //        s = Encoding.GetEncoding(0x4e8).GetString(buffer3);
            //    }
            //    string str2 = (" <Hit ID= " + str5 + " Info= " + str4 + " Serial= " + num9.ToString() + " DocID= " + num10.ToString() + " > ") + "<Summary>" + s + "</Summary>";
            //    if (num11 == 1)
            //    {
            //        num = class2.InitHilighting(idSearch, clientIP, iRecordNo);
            //        class2.SetHilightOptions("", "<font color='red'>", "</font>");
            //        str7 = class2.GetHilightedField("Contents", 0).ToString();
            //        class2.ReleaseHighlighting();
            //        str2 = str2 + "<Contents><![CDATA[" + str7 + "]]></Contents>";
            //    }
            //    str2 = str2 + "</Hit>";
            //    if (num9 > 200)
            //    {
            //        break;
            //    }
            //    if (resultRecord != 0)
            //    {
            //        class2.SORelease();
            //        break;
            //    }
            //    str = str + str2;
            //}
            //return (str6 + str + "</Hits>");
            return "";
        }

        [WebMethod]
        public DataSet GetDataResultTableFatwaID(string serverIP, string clientIP, string StrCollectionName, string StrSearchWords, string StrSearchType, string StrSearchLevel, int nOffset, int nCount, int nSummeryCharsCount, int BBookNameFlag, int BMultiQueryflag, string Strscop, string strSort, bool changeEncoding, int FatwaID)
        {
        //    SearchClass class2 = null;
        //    object varValue = null;
        //    object obj3 = null;
        //    object obj4 = "";
        //    int iRecordNo = 0;
        //    object pQuery = "";
        //    int idSearch = 0;
        //    int num5 = 0;
        //    int num6 = 0;
        //    int num7 = 0;
        //    string s = "";
        //    string str4 = "0";
        //    string str6 = "";
        //    string[] strArray = StrSearchWords.Split(new char[] { ' ' });
        //    string str7 = "";
        //    for (int i = 0; i < strArray.Length; i++)
        //    {
        //        if (strArray[i] != "")
        //        {
        //            str7 = str7 + strArray[i];
        //            if (i < (strArray.Length - 1))
        //            {
        //                str7 = str7 + " + ";
        //            }
        //        }
        //    }
        //    StrSearchWords = str7;
        //    DataSet set = new DataSet();
        //    DataTable table = new DataTable("ErrorTable");
        //    table.Columns.Add("ID", Type.GetType("System.Int32"));
        //    table.Columns.Add("ErrorStr", Type.GetType("System.String"));
        //    DataRow row = null;
        //    try
        //    {
        //        class2 = new SearchClass();
        //        varValue = serverIP;
        //        obj3 = clientIP;
        //    }
        //    catch (Exception)
        //    {
        //        row = table.NewRow();
        //        row["ID"] = 1;
        //        row["ErrorStr"] = "Fail to Create Object.";
        //        table.Rows.Add(row);
        //        set.Tables.Add(table);
        //        return set;
        //    }
        //    if (class2.SOInitialize() == 0)
        //    {
        //        class2.SetSearchOption(0x11, ref varValue);
        //        class2.SetSearchOption(0x12, ref obj3);
        //        class2.SetSearchOption(0x13, ref obj4);
        //        char ch = '"';
        //        if (changeEncoding)
        //        {
        //            byte[] bytes = Encoding.UTF8.GetBytes(StrSearchWords);
        //            byte[] buffer2 = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding(0x4e8), bytes);
        //            StrSearchWords = Encoding.GetEncoding(0x4e4).GetString(buffer2);
        //        }
        //        pQuery = " Search '" + StrCollectionName + "' Using " + StrSearchLevel + ",NOCAM,NOCS,NOSOUNDEX, " + StrSearchType;
        //        if (FatwaID != -1)
        //        {
        //            pQuery = string.Concat(new object[] { pQuery, " For 'Summary' = ^رقم_فتوى ", FatwaID, "^ " });
        //        }
        //        pQuery = pQuery.ToString().Replace("'", ch.ToString());
        //        str6 = pQuery.ToString();
        //    }
        //    try
        //    {
        //        class2.SetSearchQuery(ref pQuery);
        //    }
        //    catch
        //    {
        //        row = table.NewRow();
        //        row["ID"] = 2;
        //        row["ErrorStr"] = "SearchObj.SetSearchQuery Error.1" + str6;
        //        table.Rows.Add(row);
        //        set.Tables.Add(table);
        //        return set;
        //    }
        //    object szCollectionName = StrCollectionName;
        //    if (class2.SearchNow(ref szCollectionName, ref obj3, nOffset, nCount) == 0x7da)
        //    {
        //        row = table.NewRow();
        //        row["ID"] = 3;
        //        row["ErrorStr"] = "عفوا ًلا توجد نتائج2" + str6;
        //        table.Rows.Add(row);
        //        set.Tables.Add(table);
        //        return set;
        //    }
        //    idSearch = class2.GetSearchID();
        //    try
        //    {
        //        class2.InitResult(idSearch, obj3.ToString());
        //    }
        //    catch (Exception exception2)
        //    {
        //        DataRow row2 = table.NewRow();
        //        row2["ID"] = 5;
        //        row2["ErrorStr"] = exception2.Message + "3" + str6;
        //        table.Rows.Add(row);
        //        set.Tables.Add(table);
        //        return set;
        //    }
        //    num5 = int.Parse(class2.GetResultInfo(3).ToString());
        //    if (num5 == 0)
        //    {
        //        row = table.NewRow();
        //        row["ID"] = 4;
        //        row["ErrorStr"] = "عفوا ًلا توجد نتائج4" + str6;
        //        table.Rows.Add(row);
        //        set.Tables.Add(table);
        //        return set;
        //    }
        //    num6 = 0;
        //    num7 = num5 - nOffset;
        //    if (num7 == 1)
        //    {
        //        num6 = 0;
        //    }
        //    else if (num7 <= nCount)
        //    {
        //        num6 = num7 - 1;
        //    }
        //    else
        //    {
        //        num6 = nCount - 1;
        //    }
        //    DataTable table2 = new DataTable("ResultTable");
        //    table2.Columns.Add("ID", Type.GetType("System.String"));
        //    table2.Columns.Add("Serial", Type.GetType("System.Int32"));
        //    table2.Columns.Add("Summary", Type.GetType("System.String"));
        //    table2.Columns.Add("Info", Type.GetType("System.String"));
        //    table2.Columns.Add("DocID", Type.GetType("System.String"));
        //    table2.Columns.Add("LeftVal", Type.GetType("System.Int32"));
        //    table2.Columns.Add("RightVal", Type.GetType("System.Int32"));
        //    table2.Columns.Add("PageID", Type.GetType("System.Int32"));
        //    table2.Columns.Add("TotalResult", Type.GetType("System.Int32"));
        //    DataRow row3 = null;
        //    try
        //    {
        //        for (iRecordNo = 0; iRecordNo <= num6; iRecordNo++)
        //        {
        //            int resultRecord = class2.GetResultRecord(iRecordNo);
        //            if (class2.GetResultField("Info").ToString() != "")
        //            {
        //                s = class2.GetResultField("Summary").ToString().Replace("\"", " ").Replace("&nbsp;", " ");
        //                string str2 = class2.GetResultField("Info").ToString().Replace("\"", " ");
        //                string str3 = class2.GetResultField("id").ToString();
        //                str4 = class2.GetResultField("DocID").ToString().Replace("\"", " ");
        //                string str8 = class2.GetResultField("LeftVal").ToString();
        //                string str9 = class2.GetResultField("RightVal").ToString();
        //                string str10 = class2.GetResultField("PageID").ToString();
        //                int num9 = (nOffset + iRecordNo) + 1;
        //                if (changeEncoding)
        //                {
        //                    byte[] buffer3 = Encoding.GetEncoding(0x4e4).GetBytes(s);
        //                    s = Encoding.GetEncoding(0x4e8).GetString(buffer3);
        //                    byte[] buffer4 = Encoding.GetEncoding(0x4e4).GetBytes(str2);
        //                    str2 = Encoding.GetEncoding(0x4e8).GetString(buffer4);
        //                }
        //                row3 = table2.NewRow();
        //                row3["ID"] = str3;
        //                row3["Serial"] = num9;
        //                row3["Info"] = str2;
        //                row3["Summary"] = s;
        //                row3["DocID"] = str4;
        //                row3["LeftVal"] = Convert.ToInt32(str8);
        //                row3["RightVal"] = Convert.ToInt32(str9);
        //                row3["PageID"] = Convert.ToInt32(str10);
        //                row3["TotalResult"] = num5;
        //                table2.Rows.Add(row3);
        //                if (num9 > 200)
        //                {
        //                    goto Label_07A2;
        //                }
        //                if (resultRecord != 0)
        //                {
        //                    class2.SORelease();
        //                    goto Label_07A2;
        //                }
        //            }
        //        }
        //    }
        //    catch (Exception exception3)
        //    {
        //        string str11 = exception3.ToString();
        //    }
        //Label_07A2:
        //    set.Tables.Add(table2);
        //    return set;


            return new DataSet();
            
        }

        private string prepareForSearch(string s)
        {
            s = Regex.Replace(s, "[أآإ]", "ا");
            s = Regex.Replace(s, "ة", "ه");
            s = Regex.Replace(s, "ى", "ي");
            s = Regex.Replace(s, @"[َُِّْ~ًٌٍ]", "");//علامات الترقيم
            s = Regex.Replace(s, @"\bعبد\b\s*", " عبد");
            s = Regex.Replace(s, @"\bابو\b\s*", " ابو");
            s = Regex.Replace(s, @"\W", " ");
            s = Regex.Replace(s, @"\s+", " ");
            return s.Trim();
        }

        private object getDisplyedText(string text, string StrSearchWords, string StrSearchType, string StrSearchLevel)
        {
            string command = "";
            string Space = (StrSearchType == "EXACT" ? " " : "");
            if (StrSearchLevel == "Phrase")
            {
                command = Space + this.prepareForSearch(StrSearchWords) + Space;
            }
            else if (StrSearchLevel == "NoTWord")
            {
                command += "^\\s*\\w+(\\s\\w+){1,10}";
            }
            else if (StrSearchLevel == "AnyWord")
            {
                string[] strArray = StrSearchWords.Split(new char[] { ' ' });
                for (int i = 0; i < strArray.Length; i++)
                {
                    command += (i != 0 ? "|" : "");
                    command += "(" + Space + this.prepareForSearch(strArray[i]) + Space + ")";
                }
            }
            MatchCollection matches = Regex.Matches(text, command);
            string returnText = "";
            for (int i = 0; i < matches.Count; i++)
            {
                int findex = matches[i].Index;
                int wordCount = 0;
                while (wordCount < 10 && findex > 0 && text.LastIndexOf(" ", findex - 1) > 0)
                {
                    findex = text.LastIndexOf(" ", findex - 1);
                    wordCount++;
                }
                int lindex = matches[i].Index + matches[i].Length;
                wordCount = 0;
                while (wordCount < 10 && lindex < text.Length - 1 && text.IndexOf(" ", lindex) != -1)
                {
                    lindex = text.IndexOf(" ", lindex + 1);
                    wordCount++;
                }
                try
                {
                    if (findex != 0)
                    {
                        returnText += " ...<span style='font-weight:normal;'>" + text.Substring(findex, matches[i].Index - findex) + "</span>";
                    }
                    if (StrSearchLevel == "NoTWord")
                    {
                        returnText += matches[i].Value;
                    }
                    else
                    {
                        returnText += "<span style='font-weight:bold;'>" + matches[i].Value + "</span>";
                    }
                    if (lindex < text.Length - 1)
                    {
                        returnText += "<span style='font-weight:normal;'>" + text.Substring(matches[i].Index + matches[i].Length, lindex - matches[i].Index - matches[i].Length) + "</span>";
                    }
                }
                catch (Exception er)
                {
                }
                if (i > 2)
                {
                    break;
                }
            }
            return returnText;
        }


        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
    }
}